home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-04-03 | 9.5 KB | 318 lines | [TEXT/MPS ] |
- //----------------------------------------------------------------------------------------
- // UTabBehaviors.cp
- // Copyright © 1984-96 by Apple Computer, Inc. All rights reserved.
- //----------------------------------------------------------------------------------------
-
- #ifndef __UTABBEHAVIORS__
- #include "UTabBehaviors.h"
- #endif
-
- // MacApp
-
- // #ifndef __UAPPLICATION__
- // #include "UApplication.h"
- // #endif
-
- #ifndef __UDISPATCHER__
- #include "UDispatcher.h"
- #endif
-
- #ifndef __UEVENT__
- #include "UEvent.h"
- #endif
-
- #ifndef __UMACAPPGLOBALS__
- #include "UMacAppGlobals.h"
- #endif
-
- #ifndef __UMACAPPUTILITIES__
- #include "UMacAppUtilities.h"
- #endif
-
- #ifndef __USTREAM__
- #include "UStream.h"
- #endif
-
- #ifndef __UWINDOW__
- #include "UWindow.h"
- #endif
-
- //========================================================================================
- // CLASS TTabber
- //========================================================================================
- #undef Inherited
- #define Inherited TBehavior
-
- #pragma segment MAOpen
- MA_DEFINE_CLASS_M1(TTabber, Inherited);
-
- //----------------------------------------------------------------------------------------
- // TTabber constructor
- //----------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- TTabber::TTabber()
- : fRecursive(TRUE),
- fFoundCurrent(FALSE),
- fFirst(NULL),
- fNext(NULL)
- {
- } // TTabber::TTabber
-
- //----------------------------------------------------------------------------------------
- // TTabber destructor
- //----------------------------------------------------------------------------------------
- #pragma segment MADestructorRes
-
- TTabber::~TTabber()
- {
- }
-
- //----------------------------------------------------------------------------------------
- // TTabber::ITabber:
- //----------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- void TTabber::ITabber(Boolean recursive)
- {
- this->IBehavior(kTabBehavior);
-
- fRecursive = recursive;
- } // TTabber::ITabber
-
- //----------------------------------------------------------------------------------------
- // TTabber::ReadFrom:
- //----------------------------------------------------------------------------------------
- #pragma segment MAReadResource
-
- void TTabber::ReadFrom(TStream* aStream) // override
- {
- Inherited::ReadFrom(aStream);
-
- fRecursive = aStream->ReadBoolean();
- } // TTabber::ReadFrom
-
- //----------------------------------------------------------------------------------------
- // TTabber::WriteTo:
- //----------------------------------------------------------------------------------------
- #pragma segment MAWriteResource
-
- void TTabber::WriteTo(TStream* aStream) // override
- {
- Inherited::WriteTo(aStream);
-
- aStream->WriteBoolean(fRecursive);
- } // TTabber::WriteTo
-
- //----------------------------------------------------------------------------------------
- // TTabber::DoKeyEvent:
- //----------------------------------------------------------------------------------------
- #pragma segment MATabBehaviorRes
-
- void TTabber::DoKeyEvent(TToolboxEvent* event)
- {
- if (event && event->fText == chTab)
- this->Tab(event->IsShiftKeyPressed());
- else
- Inherited::DoKeyEvent(event);
- } // TTabber::DoKeyEvent
-
- //----------------------------------------------------------------------------------------
- // TTabber::Tab:
- //----------------------------------------------------------------------------------------
- #pragma segment MATabBehaviorRes
-
- void TTabber::Tab(Boolean tabBackward)
- {
- this->Reset();
-
- this->FindTargets(tabBackward);
-
- if (fNext == NULL)
- fNext = fFirst;
-
- if (fNext)
- {
- if (fNext->BecomeTarget())
- fNext->SetTargetSelection(kRedraw);
- }
- } // TTabber::Tab
-
- //----------------------------------------------------------------------------------------
- // TTabber::Reset:
- //----------------------------------------------------------------------------------------
- #pragma segment MATabBehaviorRes
-
- void TTabber::Reset()
- {
- fFirst = NULL;
- fNext = NULL;
- fFoundCurrent = FALSE;
- } // TTabber::Reset
-
- //----------------------------------------------------------------------------------------
- // TTabber::FindSubViewTargets:
- //----------------------------------------------------------------------------------------
- #pragma segment MATabBehaviorRes
-
- void TTabber::FindSubViewTargets(TView* parent,
- Boolean tabBackward)
- {
- CSubViewIterator iter(parent,!tabBackward);
-
- for (TView* aView = iter.FirstSubView(); iter.More(); aView = iter.NextSubView())
- {
- Boolean canBeTarget = aView->IsEnabled() && aView->IsShown() && aView->WantsToBeTarget();
-
- if ((fFirst == NULL) && canBeTarget)
- fFirst = aView;
- if (aView->IsTarget())
- fFoundCurrent = TRUE;
- else if (fFoundCurrent && (fNext == NULL) && canBeTarget)
- {
- fNext = aView;
- return;
- }
-
- if (fRecursive)
- this->FindSubViewTargets(aView,tabBackward);
- }
- } // TTabber::FindSubViewTargets
-
- //----------------------------------------------------------------------------------------
- // TTabber::FindTargets:
- //----------------------------------------------------------------------------------------
- #pragma segment MATabBehaviorRes
-
- void TTabber::FindTargets(Boolean /* tabBackward */)
- {
- this->SubClassResponsibility();
- } // TTabber::FindTargets
-
- //----------------------------------------------------------------------------------------
- // TTabber::GetStandardSignature:
- //----------------------------------------------------------------------------------------
- #pragma segment MAWriteResource
-
- IDType TTabber::GetStandardSignature()
- {
- return kTabBehavior;
- } // TTabber::GetStandardSignature
-
- //========================================================================================
- // CLASS TMultiWindowTabber
- //========================================================================================
- #undef Inherited
- #define Inherited TTabber
-
- #pragma segment MAOpen
- MA_DEFINE_CLASS_M1(TMultiWindowTabber, Inherited);
-
- //----------------------------------------------------------------------------------------
- // TMultiWindowTabber::TMultiWindowTabber: Empty constructor to satisfy the compiler.
- //----------------------------------------------------------------------------------------
- #pragma segment ConstructorRes
-
- TMultiWindowTabber::TMultiWindowTabber()
- {
- } // TMultiWindowTabber::TMultiWindowTabber
-
- //----------------------------------------------------------------------------------------
- // TMultiWindowTabber destructor
- //----------------------------------------------------------------------------------------
- #pragma segment MADestructorRes
-
- TMultiWindowTabber::~TMultiWindowTabber()
- {
- }
-
- //----------------------------------------------------------------------------------------
- // TMultiWindowTabber::IMultiWindowTabber:
- //----------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- void TMultiWindowTabber::IMultiWindowTabber(Boolean recursive)
- {
- this->ITabber(recursive);
- } // TMultiWindowTabber::IMultiWindowTabber
-
- //----------------------------------------------------------------------------------------
- // TMultiWindowTabber::FindTargets:
- //----------------------------------------------------------------------------------------
- #pragma segment MATabBehaviorRes
-
- void TMultiWindowTabber::FindTargets(Boolean tabBackward) // Override
- {
- TWindow* theFrontWindow = gDispatcher->WMgrToWindow(FrontWindow());
-
- if (theFrontWindow)
- if (theFrontWindow->IsModal())
- this->FindSubViewTargets(theFrontWindow,tabBackward);
- else
- {
- CWMgrIterator iter(!tabBackward);
-
- for (WindowRef aWinPtr = iter.FirstWMgrWindow(); iter.More(); aWinPtr = iter.NextWMgrWindow())
- {
- TWindow* aWindow = gDispatcher->WMgrToWindow(aWinPtr);
-
- if ((aWindow) && (aWindow->IsShown()) && (aWindow->IsActive()))
- this->FindSubViewTargets(aWindow,tabBackward);
- }
- }
- } // TMultiWindowTabber::FindTargets
-
-
- //========================================================================================
- // CLASS TViewTabber
- //========================================================================================
- #undef Inherited
- #define Inherited TTabber
-
- #pragma segment MAOpen
- MA_DEFINE_CLASS_M1(TViewTabber, Inherited);
-
- //----------------------------------------------------------------------------------------
- // TViewTabber::TViewTabber: Empty constructor to satisfy the compiler.
- //----------------------------------------------------------------------------------------
- #pragma segment ConstructorRes
-
- TViewTabber::TViewTabber()
- {
- } // TViewTabber::TViewTabber
-
- //----------------------------------------------------------------------------------------
- // TViewTabber destructor
- //----------------------------------------------------------------------------------------
- #pragma segment MADestructorRes
-
- TViewTabber::~TViewTabber()
- {
- }
-
- //----------------------------------------------------------------------------------------
- // TViewTabber::IViewTabber:
- //----------------------------------------------------------------------------------------
- #pragma segment MAOpen
-
- void TViewTabber::IViewTabber(Boolean recursive)
- {
- this->ITabber(recursive);
- } // TViewTabber::IViewTabber
-
- //----------------------------------------------------------------------------------------
- // TViewTabber::FindTargets:
- //----------------------------------------------------------------------------------------
- #pragma segment MATabBehaviorRes
-
- void TViewTabber::FindTargets(Boolean tabBackward) // Override
- {
- this->FindSubViewTargets( (TView*) fOwner, tabBackward);
- } // TViewTabber::FindTargets
-
-
- //----------------------------------------------------------------------------------------
- // End of UTabBehaviors.cp
-
- #pragma segment Inline
-